package com.dys.testpredicate09;

import java.util.function.Predicate;

/**
 * @className: com.dys.testpredicate09.PredicateDefault
 * @description: 有参且返回值为Boolean的接口
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/31 下午11:02
 */
public class PredicateDefault {

    // 满足条件返回true,否则返回false
    public static void testPredicate(Predicate<String> p, String msg) {
        boolean flag = p.test(msg);
        System.out.println("flag = " + flag);
    }

    // 逻辑关系操作 and or negate isEquals方法
    public static void testPredicateAndOrNegate(Predicate<String> p1, Predicate<String> p2) {
        // p1包含H 并且 p2包含W
        boolean flag1 = p1.and(p2).test("HelloWorld");
        System.out.println("p1包含H并且p2包含W: " + flag1);
        // p1包含H 或者 p2包含W
        boolean flag2 = p1.or(p2).test("World");
        System.out.println("p1包含H或者p2包含W: " + flag2);
        // p1不包含H
        boolean flag3 = p1.negate().test("Hello");
        System.out.println("p1不包含H: " + flag2);
    }

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        // testPredicate(p -> {
        //     return p.length() > 3;
        // }, "hello");

        testPredicateAndOrNegate(p1 -> {
            return p1.contains("H");
        }, p2 -> {
            return p2.contains("W");
        });
    }
}
